package br.unisinos.pdm.dao;

import java.util.List;

import br.unisinos.pdm.model.LivroOferecido;
import br.unisinos.pdm.model.Troca;

import com.db4o.ObjectSet;
import com.db4o.internal.IoAdaptedObjectContainer;

/**
 * Classe de persistencia a banco de dados 
 */
public class TrocaDAO extends GenericDAO {
	
	public TrocaDAO(IoAdaptedObjectContainer db) {
		super(db);
	}

	public List<Troca> findTrocaOferecendo(String usuario, String nome) {
		Troca troca = new Troca();
		troca.setTrocador(usuario);
		LivroOferecido livroOferecido = new LivroOferecido();
		livroOferecido.setNome(nome);
		troca.setEnviar(livroOferecido);
		
		@SuppressWarnings("unchecked")
		ObjectSet<Troca> result = db.queryByExample(troca);
		
		return result;
	}
	
	public List<Troca> findTrocaOferecido(String usuario, String nome) {
		Troca troca = new Troca();
		troca.setUsuario(usuario);
		LivroOferecido livroOferecido = new LivroOferecido();
		livroOferecido.setNome(nome);
		troca.setReceber(livroOferecido);
		
		@SuppressWarnings("unchecked")
		ObjectSet<Troca> result = db.queryByExample(troca);
		
		return result;
	}
	
	public Troca findByExample(Troca troca) {
		
		@SuppressWarnings("unchecked")
		ObjectSet<Troca> result = db.queryByExample(troca);
		if(result == null || result.isEmpty()){
			return null;
		}else{
			return result.get(0);
		}
	}
	
	public List<Troca> findTrocaByUsuario(String usuario) {
		Troca troca = new Troca();
		troca.setUsuario(usuario);
		
		@SuppressWarnings("unchecked")
		ObjectSet<Troca> result = db.queryByExample(troca);
		
		return result;
	}
}
